<ul>
  <li>Directory</li>
  <li>Trowable
    <ul>
      <li>Exception
        <ul>
          <li>ErrorException</li>
          <li>LogicException
            <ul>
              <li>BadFunctionCallException
                <ul>
                  <li>BadMethodCallException</li>
                </ul>
              </li>
              <li>DomainException</li>
              <li>InvalidArgumentException</li>
              <li>LengthException</li>
              <li>OutOfRangeException</li>
            </ul>
          </li>
          <li>RuntimeException
            <ul>
              <li>OutOfBoundsException</li>
              <li>OverflowException</li>
              <li>RangeExcpetion</li>
              <li>UnderflowException</li>
              <li>UnexpectedValueException</li>
            </ul>
          </li>
        </ul>
      </li>
      <li>Error
        <ul>
          <li>AssetionError</li>
          <li>DivisionByZeroError</li>
          <li>ParseError</li>
          <li>TypeError
            <ul>
              <li>ArgumentCountError</li>
            </ul>
          </li>
          <li>ArthmeticError</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Traversable
    <ul>
      <li>IteratorAggregate</li>
      <li>Iterator
        <ul>
          <li>Generator</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>ArrayAccess</li>
  <li>Serializable</li>
  <li>Closure</li>
  <li>Countable</li>
  <li>And other SPL classes...</li>
</ul>